import { toast } from "./util";

/** 版本号控制 */
// const MINI_VERSION: string = "0.0.1";
// 正式服务器
/** 域名 */
const baseURL: string = "https://www.nuomibaobei.com/mock";

/** 请求和返回头部信息可能有的数据 */
interface Header {
    "content-type"?: string;
    "Cookie"?: string;
    "Set-Cookie"?: string;
}

/**
 * @description 封装wx.request，并做一些简单的处理
 * @param {Object} config 数据请求配置
 * @param {string} config.url 相对地址
 * @param {Object} config.data 携带数据
 * @param {string=} config.method 请求方法
 * @param {string=} config.baseURL 域名
 * @returns {Promise<res>} 返回一个resolve值为Request.Responses类型的Promise
 */
async function ajax(config: req): Promise<res> {
    const method: string = config.method || "POST";
    const header: Header = {};
    const url: string = baseURL + config.url;
    const data: IAnyObject = config.data || {};
    if (method === "POST") {
        header["content-type"] = "application/x-www-form-urlencoded";
    }
    return new Promise<res>((resolve, reject) => {
        wx.request({
            url,
            data,
            method,
            header,
            success({ data: body }: { data: any }) {
				console.log("======RESPONSE START=====")
				console.log(url)
				console.log(data)
				console.log(body)
				console.log("======RESPONSE END=====")
                resolve(body);
            },
            fail() {
                reject("网络连接失败");
            }
        });
    }).catch((err: any) => {
        if (typeof err === "object") {
            toast(err.message);
            return err;
        } else if (typeof err === "string") {
            toast(err);
            return Promise.reject(err);
        }
    });
}

export default ajax;
